package com.ljm.common.util;


import com.ljm.common.dto.BaseResult;
import com.ljm.common.enums.ResultStatus;

/**
 * 响应工具类
 *
 * @author chenHuaMing
 * @version 2018年5月31日
 * @see ResultUtil
 * @since 1.8
 */
public class ResultUtil {
    /**
     * 响应成功
     *
     * @return 2018年5月31日
     * @author: chenHuaMing
     */
    public static BaseResult success() {
        return new BaseResult(ResultStatus.SUCCESS.getCode(),ResultStatus.SUCCESS.getMsg(),null,null);
    }

    /**
     * 成功响应（带消息）
     *
     * @param msg 消息
     * @return 2018年5月31日
     * @author: chenHuaMing
     */
    public static BaseResult success(String msg) {
        return new BaseResult(ResultStatus.SUCCESS.getCode(),msg,null,null);
    }

    /**
     * 成功响应（带自定义响应标识、描述）
     *
     * @param code 编号
     * @param msg  描述
     * @return 2018年5月31日
     * @author: chenHuaMing
     */
    public static BaseResult success(String code, String msg) {
        return new BaseResult(code,msg,null,null);
    }

    /**
     * 成功响应（自定义响应标识和描述）
     *
     * @param resultStatus 编号
     * @param msg          描述
     * @return 2018年5月31日
     * @author: chenHuaMing
     */
    public static BaseResult success(ResultStatus resultStatus, String msg) {
        return new BaseResult(resultStatus.getCode(),msg,null,null);
    }

    /**
     * 响应成功（带数据）
     *
     * @param object 响应数据
     * @return 2018年5月31日
     * @author: chenHuaMing
     */
    public static BaseResult successData(Object object) {
        return new BaseResult(ResultStatus.SUCCESS.getCode(),ResultStatus.SUCCESS.getMsg(),object,null);
    }

    /**
     * 成功响应（编号、描述、数据）
     *
     * @param msg  描述
     * @param object 数据
     * @return 2018年5月31日
     * @author: chenHuaMing
     */
    public static BaseResult successData(String msg, Object object) {
        return new BaseResult(ResultStatus.SUCCESS.getCode(),msg,object,null);
    }

    /**
     * Description: response 结果封装
     *
     * @param msg        结果描述
     * @param object     数据
     * @param code       响应标识
     * @return
     * @author ming
     * @date 2018年8月21日 下午11:20:14
     * @see
     */
    public static BaseResult successData(String code,String msg, Object object) {
        return new BaseResult(code,msg,object,null);
    }

    /**
     * 结果封装
     * @param code 返回标识
     * @param msg 描述
     * @param object 数据
     * @param forwardUrl 转发路径
     * @return 响应结果
     */
    public static BaseResult successData(String code,String msg, Object object,String forwardUrl) {
        return new BaseResult(code,msg,object,forwardUrl);
    }

    /**
     * 错误响应
     *
     * @return 2018年5月31日
     * @author: chenHuaMing
     */
    public static BaseResult error() {
        return new BaseResult(ResultStatus.FIAL.getCode(),ResultStatus.FIAL.getMsg(),null,null);
    }

    /**
     * 错误响应（描述）
     *
     * @param msg 描述
     * @return 2018年5月31日
     * @author: chenHuaMing
     */
    public static BaseResult error(String msg) {
        return new BaseResult(ResultStatus.FIAL.getCode(),msg,null,null);
    }

    /**
     * 错误响应（编号、描述）
     *
     * @param code
     * @param msg
     * @return 2018年5月31日
     * @author: chenHuaMing
     */
    public static BaseResult error(String code, String msg) {
        return new BaseResult(code,msg,null,null);
    }

    /**
     * 错误响应（编号、描述）
     *
     * @param resultStatus
     * @param msg
     * @return 2018年5月31日
     * @author: chenHuaMing
     */
    public static BaseResult error(ResultStatus resultStatus, String msg) {
        return new BaseResult(resultStatus.getCode(),msg,null,null);
    }

    /**
     * 错误响应（编号、描述）
     *
     * @param code 响应状态码
     * @param msg  消息
     * @return 2018年5月31日
     * @author: chenHuaMing
     */
    public static BaseResult error(String code, String msg, Object obj) {
        return new BaseResult(code,msg,obj,null);
    }

    /**
     * 错误响应
     *
     * @param resultStatus 结果常量
     * @return 2018年5月31日
     * @author: chenHuaMing
     */
    public static BaseResult error(ResultStatus resultStatus) {
        return new BaseResult(resultStatus.getCode(),resultStatus.getMsg(),null,null);
    }
}
